Various types of execution environments may be utilized to execute applications. Software containers, for example, are one type of execution environment for applications (which might also be referred to herein as “tenants”). Software containers can provide functionality for executing applications, loading application dependencies, interconnecting applications at run time, managing application lifecycles including integrated application deployment and eviction, multi-tenant execution, and other types of functionality.
Applications executing in a software container typically utilize one or more classloaders in order to load needed classes. Classloaders load requested classes on-demand, as the classes are needed by an application. On-demand loading of classes can, however, cause performance problems in certain types of scenarios. For example, when live network traffic is received at a software container for processing by an application, it may be necessary to load certain classes in order to enable the application to process the traffic. The loading of classes needed by the application at or around the time the traffic is received might impose significantly latency on the processing of the network traffic. Other factors might also contribute to less than optimal performance of classloaders in various types of execution environments.
It is with respect to these and other considerations that the disclosure made herein is presented.